class Solution:
    def trailingZeroes(self, n: int) -> int:
        res = 0
        while n > 0:
            n //= 5
            res += n
        return res
if __name__ == '__main__':
    s = Solution()
    print(s.trailingZeroes(100))

# 思路：
# 每当阶乘中出现一对2×5，就会产生一个尾随零。
# 2 的因子非常多（每个偶数都是 2 的倍数），5 的因子相对稀少，每对 2×5 才会组成一个 10，产生一个尾零，所以阶乘中尾零的数量 = 阶乘中 5 的因子个数
# 因此：零的个数 = 向下取整（n/5）+ 向下取整（n/25）+ 向下取整（n/125）+ ...
# 例如：输入n=100
# 向下取整（100/5）= 20 -->(包含5，10，15，20，25，30，35，40，45，50，55，60，65，70，75，80，85，90，95，100)
# 向下取整（100/25）= 4 -->(包含25，50，75，100，多贡献一个额外的5)
# 向下取整（100/125）= 0 -->(没有125的因子)
# 因此，阶乘中尾零的数量 = 20 + 4 + 0 = 24